Nested Loops

Matlab allows us to put compound statements like if, while, and for statements inside other compound statements. This is called nesting. You have already seen this capability using conditional (if) statements.

Often, we must conditionally execute code (use if stmts) within iterative statements (loops). In this event, we nest (put) an if statement in the body of the loop. This nesting process can be done as many times as necessary. Similarly, for loops can be nested inside other for loops, or inside of while and vice versa.

       % create a multiplication table 
       % and save it as A
       rows = 1:10
       cols = 1:10
       for r = rows
          for c = cols
             A(r, c) = r * c;
          end
       end

Keep in mind that just as with any statement that is put inside a for loop, a nested for loop is executed once for every value in the vector of the enclosing for loop. In the following script, the outer for loop (the loop for r = rows) is executed 10 times, once for each value of r. Each time, the inner for loop (the loop for c = cols) updates 10 different entries, one for each value of c, in the A matrix.

Therefore, a total of 100 (= 10 * 10) entries in A are updated.

Control flow diagram for nested for loops

Indentation

When nesting if statements and for loops together, consistent use of indentation helps to make your code readable. Use the Smart Indent (Text->Smart Indent) feature of the Matlab text editor to ensure that the indentation is correct for your code. Improper indentation can hide problems:

Stopping a nested Loop Using the break Statement

Keep in mind that a break statement only makes sense within a loop. It is also important to understand that a break statement only applies to the inner-most loop enclosing the break statement.